/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Cliente;

import Server.OpcionesDelServidor;
import java.io.*;
import java.net.Socket;
import javax.swing.JFrame;

/**
 *
 * @author Administrador
 */
public class OpcionesDelCliente {

    public static Socket inciarSesion(String direccionServidor, int puerto, JFrame error) {

        Socket cliente = null;

        try {
            cliente = new Socket(direccionServidor, puerto);

        } catch (Exception e) {
            error.setVisible(true);
            e.printStackTrace();
        }
        return cliente;
    }

    public static String enviarDatosUsuarioLogin(PrintWriter salida, String usuario, String password, BufferedReader entrada) {

        salida.println(usuario);
        salida.flush();
        salida.println(password);
        salida.flush();
        String esPrivilegiado = null;
        try {
            esPrivilegiado = entrada.readLine();

        } catch (Exception e) {
            e.printStackTrace();
        }
        return esPrivilegiado;

    }

    public static void descargarArchivo(BufferedReader entrada, PrintWriter salida, String archivoADescargar, String directorioDestino) {

        File directorio = new File(directorioDestino);

        if (directorio.isDirectory()) {
            salida.println("descargarArchivo");
            salida.flush();
            salida.println(archivoADescargar);
            salida.flush();
            int ultimo = archivoADescargar.lastIndexOf("/");

            receiveFile(directorioDestino, archivoADescargar.substring(ultimo + 1), entrada);

        }

    }

    public static void receiveFile(String directoryDestination, String fileName, BufferedReader input) {
        System.out.println("estoy en receive");
        System.out.println(directoryDestination);
        System.out.println(fileName);
        File file;
        BufferedOutputStream bos = null;
        try {
            file = new File(directoryDestination + "/" + fileName);
            bos = new BufferedOutputStream(new FileOutputStream(file));
            char[] array = new char[5120];
            int arrayLength = input.read(array);
            while (arrayLength == array.length) {
                for (int i = 0; i < arrayLength; i++) {
                    bos.write(array[i]);
                    bos.flush();
                }
                arrayLength = input.read(array);
            }
            for (int i = 0; i < arrayLength; i++) {
                bos.write(array[i]);
                bos.flush();
            }
        } catch (Exception e) {
        } finally {
            try {
                bos.close();
            } catch (Exception e) {
            }
        }
    }

    public static void subirFichero(BufferedReader entrada, PrintWriter salida, String nombreArchivo, String directorioDestino) {
        
        File archivo = new File(nombreArchivo);
        System.out.println("metodo subirfichero");
        if(archivo.isFile()){
            System.out.println("estoy dentro de subir");
            salida.println("subirArchivo");
            salida.flush();
            System.out.println("hago el subirArchivo");
            salida.println(nombreArchivo);
            salida.flush();
            System.out.println("hago el nombrearchivo");
            salida.println(directorioDestino);
            salida.flush();
            System.out.println(directorioDestino);
            System.out.println("hago el direcotorio");
            
            OpcionesDelServidor.enviarArchivo(archivo, salida);

        }
    }
}